package com.kgc.service.interf;

import com.kgc.entity.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface ArticlesService {
    // 查询文章
    List<Articles> getAllArticle(String queryKey, String queryDateBegin, String queryDateEnd, Integer articleSort);

    // 查询草稿
    List<Articles> getdraft(int authorID);

    //查询指定用户文章
    List<Articles> getArticleByUserID(int userId);

    //发布文章下拉框文章类别
    List<ArticleSort> getArticleType();

    // 添加文章/存草稿 二合一
    int addArticle(Articles article);

    //删除指定用户下的指定文章
    int deleteArticle(Integer authorId,Integer articleId);

    //查询指定文章（可用修改文章时数据回显）
    Articles getArticleByArticleID(int articleId);

    //修改文章
    int updateArticle(Articles article);

    //查询文章收藏记录
    List<ArticleFavorites> getArticleFavorites( int userID,int articleID);

    //添加文章收藏记录
    int addArticleFavorites(ArticleFavorites articleFavorites);

    //修改收藏状态
    int updateFavoritesStatus(ArticleFavorites articleLikes1);

    //修改文章收藏量
    int updateFavoritesCount(int articleID,int p);

    // 查询收藏夹
    List<Articles> getuserFavorites(int userID);


    //增加文章浏览量
    int addarticlePageview(int articleID);

    //添加文章浏览记录（直接调用该接口）
    int addarticleViews(int articleID,int userID);


    //查询文章点赞记录
    List<ArticleLikes> getArticleLikes(int userID, int articleID);

    //添加文章点赞记录
    int addArticleLikes(ArticleLikes articleLikes);

    //修改点赞状态
    int updateLikesStatus(ArticleLikes articleLikes);

    //修改文章点赞量
    int updateLikesCount(int articleID,int p);

    //    热门文章排序
    List <Articles> sort();


    //获取当前用户对当前文章的 点赞状态
    String getstatus1(Integer articleId,Integer userId);
    //获取当前用户对当前文章的 收藏状态
    String getstatus2(Integer articleId,Integer userId);

    //   管理员修改文章类别库
    int updatesort(ArticleSort articleSort);

    //    管理员删除文章类别库
    int deletesort(ArticleSort articleSort);
    //    管理员新增文章类别
    int addsort(ArticleSort articleSort);
    // 管理员查询文章
    List<Articles> getAllArticle1(String queryKey, String queryDateBegin,
                                  String queryDateEnd, Integer articleSort,
                                  Integer articleID);

    //    管理员下架上架文章
    int updateArticleStatus( String articleStatus ,Integer articleID);
    //    管理员给个人用户发通知
    int sendnotifications(Usernotifications usernotifications);
    //用户查看个人通知
    List<Usernotifications> getnotifications(Integer userId);
    //用户已读个人通知
    int readnotifications(Integer notificationsId);
}
